package com.jiawa.train.common.exception;

//业务的异常，需要继承RuntimeException，不要继承Exception，这个类每次需要自己try catch
public class BusinessException extends RuntimeException {

    //我们可以在业务里抛出这个异常，而这个异常需要有一些信息
    //这个信息就是刚刚定义的枚举值
    private BusinessExceptionEnum e;

    //未来传入枚举值
    public BusinessException(BusinessExceptionEnum e) {
        this.e = e;
    }

    public BusinessExceptionEnum getE() {
        return e;
    }

    public void setE(BusinessExceptionEnum e) {
        this.e = e;
    }

    /**
     * 不写入堆栈信息，提高性能
     */
    @Override
    public Throwable fillInStackTrace() {
        //这个是异常底层原理之一，我们直到异常出现后会出现哪些方法调用到那个地方出现问题
        //其实底层就是一个锁，然后递归调用
        //我们现在不想要抛出这个，太多了，所以需要重写
        return this;
    }

}
